// Variables that are used on both client and server

SWEP.Author        = ""
SWEP.Contact        = ""
SWEP.Purpose        = ""
SWEP.Instructions    = ""

SWEP.ViewModel        = "models/weapons/v_pistol.mdl"
SWEP.WorldModel        = "models/weapons/w_camphone.mdl"

util.PrecacheModel( SWEP.ViewModel )
util.PrecacheModel( SWEP.WorldModel )

SWEP.Primary.ClipSize        = -1
SWEP.Primary.DefaultClip    = -1
SWEP.Primary.Automatic        = false
SWEP.Primary.Ammo            = "none"

SWEP.Secondary.ClipSize        = -1
SWEP.Secondary.DefaultClip    = -1
SWEP.Secondary.Automatic    = true
SWEP.Secondary.Ammo            = "none"

SWEP.ShootSound                = "NPC_CScanner.TakePhoto"

SWEP.CameraZoom                = 80
SWEP.Roll                    = 0

/*---------------------------------------------------------
   Precache Stuff
---------------------------------------------------------*/
function SWEP:Precache()
    util.PrecacheSound( self.ShootSound )
end

/*---------------------------------------------------------
    Reload does nothing
---------------------------------------------------------*/
function SWEP:Reload()

    self.Owner:SetFOV( 80, 0 )
    self.CameraZoom = 80
    self.Roll = 0
        
end


/*---------------------------------------------------------
   The effect when a weapon is fired successfully
---------------------------------------------------------*/
function SWEP:DoShootEffect()

    self.Weapon:EmitSound( self.ShootSound    )
    self.Weapon:SendWeaponAnim( ACT_VM_PRIMARYATTACK )
    self.Owner:SetAnimation( PLAYER_ATTACK1 )
    
end

/*---------------------------------------------------------
    PrimaryAttack
---------------------------------------------------------*/
function SWEP:PrimaryAttack()

    self:DoShootEffect()
    
    // If we're multiplayer this can be done totally clientside
    if (!SinglePlayer() && SERVER) then return end
    if (CLIENT && !IsFirstTimePredicted()) then return end
    
    self.Owner:ConCommand( "jpeg" )
    
end

/*---------------------------------------------------------
    SecondaryAttack
---------------------------------------------------------*/
function SWEP:SecondaryAttack()

    // Nothing. See Think for zooming.
    
end

/*---------------------------------------------------------
   
---------------------------------------------------------*/
function SWEP:Think()

    local cmd = self.Owner:GetCurrentCommand()
    
    self.LastThink = self.LastThink or 0
    local fDelta = (CurTime() - self.LastThink)
    self.LastThink = CurTime()

    self:DoZoomThink( cmd, fDelta )
    self:DoRotateThink( cmd, fDelta )

end


/*---------------------------------------------------------
   
---------------------------------------------------------*/
function SWEP:DoZoomThink( cmd, fDelta )

    // Right held down
    if ( !self.Owner:KeyDown( IN_ATTACK2 ) ) then return end
    
    self.CameraZoom = math.Clamp( self.CameraZoom + cmd:GetMouseY() * 3 * fDelta, 0.1, 175 )
    
    self.Owner:SetFOV( self.CameraZoom, 0 )

end

